/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package br.uniceub.fsw.talentos.dao;

import br.uniceub.fsw.arquitetura.persistencia.dao.BaseDAO;
import br.uniceub.fsw.arquitetura.persistencia.dao.ConstrutorSQL;
import br.uniceub.fsw.talentos.vo.ParceiroVO;
import java.io.Serializable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

/**
 *
 * @author WinAdmin
 */
public class ParceiroDAO extends BaseDAO<ParceiroVO>{

    @Override
    public void inserir(ParceiroVO parceiro) {
        ConstrutorSQL query = new ConstrutorSQL();

        query.append("INSERT INTO TB_Parceiro( NR_CNPJ, DT_InicioParceria, " +
                "DT_FimParceria, ED_Web)");
        query.append("VALUES ( ?, ?, ?, ?)");

        List<?> parametros = criarParametros( parceiro.getNrCnpj(),parceiro.getDtInicioParceria()
                , parceiro.getDtFimParceria(), parceiro.getEdWeb());

        executarInsercao(query.toString(), parametros);


  //      throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void alterar(ParceiroVO parceiro) {

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("UPDATE TB_Pessoa SET ID_Parceiro = ?,");
        query.append("NR_CNPJ = ?");
        query.append("DT_InicioParceria = ?");
        query.append("DT_FimParceria = ?");
        query.append("ED_Web = ?");
        query.append("WHERE ID_Parceiro = ?");

        List<?> parametros = criarParametros(parceiro.getIdParceiro(), parceiro.getNrCnpj(),
                parceiro.getDtInicioParceria(), parceiro.getDtFimParceria(), parceiro.getEdWeb());

        executarAlteracao(query.toString(), parametros);

    //  throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void excluir(ParceiroVO parceiro) {

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("DELETE FROM TB_Parceiro");
        query.append("WHERE ID_Parceiro = ?");

        executarAlteracao(query.toString(), criarParametros(parceiro.getIdParceiro()));

    //    throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public ParceiroVO consultarPorId(Serializable id) {
        ParceiroVO parceiro = null;

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("SELECT * FROM TB_Parceiro T WHERE T.ID_Parceiro = ?");

        parceiro = consultarUm(query.toString(), criarParametros(id));

        return parceiro;
    }

    @Override
    public List<ParceiroVO> consultarPorExemplo(ParceiroVO parceiro) {

        List<ParceiroVO> listaRetorno = null;

        ConstrutorSQL query = new ConstrutorSQL();

        query.append("SELECT * FROM TB_Parceiro T");

        mapearQueryParaExemplo(query, parceiro);

        listaRetorno = consultar(query.toString(), recuperarParametros());

        return listaRetorno;

    //    throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected ParceiroVO extrairObjetoResultado(ResultSet rs) throws SQLException {

      ParceiroVO parceiro = new ParceiroVO();

        parceiro.setIdParceiro(new Integer(rs.getInt("ID_Parceiro")));
        parceiro.setNrCnpj(new Integer(rs.getInt("NR_Cnpj")));
        parceiro.setDtInicioParceria(rs.getDate("DT_InicioParceria"));
        parceiro.setDtFimParceria(rs.getDate("DT_FimParceria"));
        parceiro.setEdWeb(new String(rs.getString("ED_Web")));

        return parceiro;

    //    throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected void mapearQueryParaExemplo(ConstrutorSQL query, ParceiroVO parceiro) {

        if (parceiro.getIdParceiro() != null) {
            query.append("AND T.ID_Parceiro = ?");
            adicionarParametro(parceiro.getIdParceiro());
        }

        if (parceiro.getNrCnpj() != null) {
            query.append("AND T.NR_CNPJ = ?");
            adicionarParametro(parceiro.getNrCnpj());
        }

        if (parceiro.getDtInicioParceria() != null) {
            query.append("AND T.DT_InicioParceria = ?");
            adicionarParametro(parceiro.getDtInicioParceria());
        }

        if (parceiro.getDtFimParceria() != null) {
            query.append("AND T.DT_FimParceria = ?");
            adicionarParametro("%" + parceiro.getDtFimParceria() + "%");
        }

        if (parceiro.getEdWeb() != null) {
            query.append("AND T.ED_Web LIKE ?");
            adicionarParametro(parceiro.getEdWeb());
        }


    //    throw new UnsupportedOperationException("Not supported yet.");
    }

}
